Internal combustion engines used for automotive vehicles, marine applications and other uses are efficiently controlled by microprocessor based electronic control modules which receive information on operator commands, engine operation parameters and the like and issue control signals for spark timing and fuel control. Such controls are necessary to achieve fuel economy, optimum vehicle performance and compliance with emissions standards. The task of defining the optimum control parameters or calibrations requires the expenditure of much development time and expense for each engine type by the engine manufacturer, and results in an advantage over competitors lacking the optimized parameters.
The control modules are available to any engine manufacturer along with field service tools, calibrations installation tools and calibrations development tools. Heretofore each manufacturer could retrieve the valuable calibrations data from a module using standard tools and pirate the data for use in a similar competing engine. It is thus desirable for an engine manufacturer to safeguard the information installed in such a module. It is generally known to secure electronically stored data such as bank accounts by requiring passwords for access to the information. The same approach can be used for securing the calibration data. That is, a password must be entered in order to retrieve the sensitive data stored in the control module.
A disadvantage of password protection is that if the password becomes lost or forgotten, and it is necessary to access the memory to change the calibration, the module becomes useless. If the module hardware manufacturer becomes a repository of secret passwords, the chance of a security breach is increased, and it is a burden to both the repository and the user to retrieve the password. Moreover it is important for the sake of flexibility that the user create and install the password as required. Thus it is desirable to recover a unit having an unknown password without reducing the security.
Since modules for controlling various engine types have different embodied software, it is desirable to use different passwords for different types to increase security. The modules, however, are identical in physical appearance, and it sometimes occurs that the identity of a module is unknown and thus an authorized user has difficulty in determining which of several passwords to use. Thus it is desirable to establish a way for an authorized user to determine the correct password.
Because it is often necessary for service technicians to access information in the module to analyze engine operation, it is unrealistic to require a password for access to all data. Thus it is desirable to allow free access to that information which does not have to be protected while safeguarding other information.